### 3.1.1 干什么 `sys/socket.h` 是 BSD socket(套接字,内核中代表一条通信端点的对象,对外表现为文件描述符)模型的标准头文件,由 glibc 提供声明。它覆盖套接字创建、主动连接、本地绑定、监听、入站连接接收、报文收发与选项设置。它只声明用户态到内核的递交接口,TCP/IP 协议处理本身由内核协议栈完成,不在本库实现。 职责边界是这样的。地址族常量 `AF_INET`(IPv4 地址族)、传输类型 `SOCK_STREAM`(面向连接、保证顺序的 TCP 字节流)与 `SOCK_DGRAM`(无连接、不保证顺序的 UDP 报文)在此声明。地址结构填充、字节序转换 `htons`、地址字符串解析 `inet_pton` 由 `arpa/inet.h`、`netinet/in.h` 等相邻头文件提供,DNS 解析由 `getaddrinfo` 等库函数另行完成,均不在本库。 ### 3.1.2 谁在调 * nmap、masscan 的端口探测底层新建 `socket()` 后调用 `connect()`(connect 扫描),或直接经 `s